#lambda函数
sum=lambda a,b:a+b #这里是一个加法的简单函数
#lambda关于去除列表元素
lst=[10,20,30,40,50]
for i in range(len(lst)):
    elem=lambda lst:lst[i]
    print(elem(lst))
#lambda函数关于对列表进行按需排序
lst2=[
    {"姓名":"陈小小","score":98},
    {"姓名":"黄小主","score":100},
    {"姓名":"黄小弟","score":95},
    {"姓名":"陈雪儿","score":97}
]
lst2.sort(key=lambda x:x.get("score"),reverse=True)#True为降序,key是排序依据
print(lst2)
print("-"*20)
#函数的递归操作
def fac(n):
    if n==0:
        return 1
    else:
        return n*fac(n-1)
sun2=fac(5)
print(sun2)
print('-'*30)
#斐波那契数列
def fac2(n):
    if n==1 or n==2:
        return 1
    else:
        return (n-1)+(n-2)
print(fac2(5)) #打印的是第5个数
print('-'*30)
#遍历前面5个
for i in range(1,6):
    print(fac(i),end="\t")
    print(end="\n")
print('-'*30)
#内置函数
#zip函数
x1=['a','b','c','d']
y1=[10,20,30,40,50]
zipped=zip(y1,x1)
print(list(zipped))
lis1=['','']
print(any(lis1))
print('-'*30)
#next函数，使用时，使用对象不能进行列表元组等的转换操作
lis=[1,2,3,4,5]
lis2=reversed(lis)
print(next(lis2))#取出一个元素，写几条就取出几个
print(next(lis2))
print('-'*30)
#filter函数，map函数
def test1(num):
    return num%2==0
new_filter=filter(test1,range(10))
print(list(new_filter))
new_map=map(test1,range(10))
print(list(new_map))
print('-'*30)
#关于format函数
print(format(3.14,'20')) #这里是整数默认右对齐，'20'表示20的格子，记得要用引号引起来
print(format('开心','20'))#这里是字符串默认左对齐，'20'表示20的格子，记得要用引号引起来
print(format(3.14,'*<20'))#这里是可以进行自定义，*表示填充符，<表示像左对齐，20是填充大小
# 注意这里*<20一起用引号引起来
